home *** CD-ROM | disk | FTP | other *** search
- /*
- File: SampleStorageDriverAPI.h
-
- Contains: Sample Storage Class definitions used by the Storage Class UT Driver
-
- Version: 1.1
-
- Copyright: © 1998-1999 by Apple Computer, Inc., all rights reserved.
-
- File Ownership:
-
- DRI: Craig Keithley
-
- Other Contact: xxx put other contact here xxx
-
- Technology: USB Drivers
-
- Writers:
-
- (TM) Tim McLeod
- (CJK) Craig Keithley
-
- Change History (most recent first):
-
- <USB3> 2/16/99 TM Add error code for class not configured.
- <USB2> 1/11/99 CJK update to use sources from 1.1f3 DDK
-
- */
-
- #ifndef __SAMPLESTORAGEDRIVERAPI__
- #define __SAMPLESTORAGEDRIVERAPI__
-
- #include <MacTypes.h>
-
- #define kDispatchTableVersion 0
-
- // Return codes from the class driver
- enum
- {
- kCommandBusyError = -10000,
- kClassNotConfiguredErr,
- kRequestPending = 1
- };
-
-
- enum ControlSelectors
- {
- kControlDisableRemoval = 0,
- kControlEnableRemoval
- };
-
- enum StatusSelectors
- {
- kStatusConfiguration = 0,
- kStatusDeviceStatus,
- kStatusRemovalStatus
- };
-
- enum driverConfigurationStatus
- {
- kNotConfigured = 0,
- kConfigureInProgress,
- kConfigureComplete,
- kConfigureFailed
- };
-
-
- #define kCDBSize 12 // Per the USB Mass Storage Class spec.
-
- typedef CALLBACK_API_C( void , StorageClassCompletionProcPtr )(void* storageClassPBPtr );
-
-
- struct StorageStatusPB {
- StorageClassCompletionProcPtr completionProc; // -> Completion routine
- UInt8 deviceStatus[2]; // <- Two bytes of status
- OSStatus status; // <- Result of operation
- };
- typedef struct StorageStatusPB StorageStatusPB;
- typedef StorageStatusPB * StorageStatusPBPtr;
-
-
- struct StorageControlPB {
- UInt32 selector; // -> Operation to perform
- StorageClassCompletionProcPtr completionProc; // -> Completion routine
- OSStatus status; // <- Result of operation
- };
- typedef struct StorageControlPB StorageControlPB;
- typedef StorageControlPB * StorageControlPBPtr;
-
-
- struct StorageExecuteCommandPB {
- UInt8 cdb[kCDBSize]; // -> CDB to send to device
- UInt32 flags; // -> Data transfer flags (See below)
- Ptr userBuffer; // -> Pointer to user buffer
- UInt32 expectedCount; // -> Expected number of bytes to transfer
- StorageClassCompletionProcPtr completionProc; // -> Completion routine
- UInt32 actualCount; // <- Actual number of bytes transferred
- OSStatus status; // <- Result of operation
- };
- typedef struct StorageExecuteCommandPB StorageExecuteCommandPB;
- typedef StorageExecuteCommandPB * StorageExecuteCommandPBPtr;
-
- // Data transfer flags for StorageExecuteCommandPB
- enum {
- kStorageDataIn = 0x0001,
- kStorageDataOut = 0x0002,
- kStorageNoData = 0x0004
- };
-
- typedef CALLBACK_API_C( OSStatus , StorageInitializeProcPtr )(void);
-
- typedef CALLBACK_API_C( OSStatus , StorageControlProcPtr )(UInt32 theControlSelector, void *theControlData);
-
- typedef CALLBACK_API_C( OSStatus , StorageStatusProcPtr )(UInt32 theInfoSelector, void *theInfo);
-
- typedef CALLBACK_API_C( OSStatus , StorageExecuteCommandProcPtr )(void* storageExecuteCommandPBPtr );
-
-
- struct StorageClassDispatchTable {
- UInt32 dispatchTableVersion;
- StorageInitializeProcPtr pStorageInitialize;
- StorageControlProcPtr pStorageControl;
- StorageStatusProcPtr pStorageStatus;
- StorageExecuteCommandProcPtr pStorageExecuteCmd;
- };
- typedef struct StorageClassDispatchTable StorageClassDispatchTable;
- typedef StorageClassDispatchTable * StorageClassDispatchTablePtr;
-
- #endif /* __SAMPLESTORAGEDRIVERAPI__ */